// $Id$

#include "PreCompile.h"
#include "IoCpp/Detail/TypeInfo.h"


using namespace IoCpp::Detail;


TypeInfo::TypeInfo()
   : typeinfo(0) {
}


TypeInfo::TypeInfo( const std::type_info& info )
   : typeinfo(&info) {
}


TypeInfo::TypeInfo( const TypeInfo& info )
   : typeinfo(info.typeinfo) {
}


TypeInfo& TypeInfo::operator=( const TypeInfo& rhs )
{
   typeinfo = rhs.typeinfo;
   return *this;
}


bool TypeInfo::Before( const TypeInfo& info ) const {
   return typeinfo->before(*info.typeinfo) != 0;
}


const char* TypeInfo::Name() const {
   return typeinfo->name();
}


bool IoCpp::Detail::operator<( const TypeInfo& lhs, const TypeInfo& rhs ) {
   return lhs.Before(rhs);
}
